<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <script>
        // 在链式编程时不需要给每一个指定一个失败回调，我们可以通过一个异常穿透在最后一个位置指定一个失败回调就可以
        // 如果我们想中断一个promise链条我们可以指定一个return new Promise(()=>{})来结束promise链条
        let p = new Promise((resolve, reject)=>{
            setTimeout(()=>{
                // resolve('ok');
                reject('err')
            },1000)
        })
        p.then(value=>{
            console.log('111')
        }).then(value=>{
            console.log('222')
        }).then(value=>{
            console.log('333')
            return new Promise(()=>{})
        }).catch(error=>{
            console.warn(error)
        })
    </script>
</body>
</html>